package org.example.network.ex1;

import java.io.IOException;
import java.net.*;

public class Demo {
    public static void send() {
        // 创建发送端的Socket对象(DatagramSocket)
        // DatagramSocket() 构造数据报套接字并将其绑定到本地主机上的任何可用端口
        try (DatagramSocket ds = new DatagramSocket()) {
            byte[] bys = "hello,udp,我来了".getBytes();
            // 构造一个数据包，发送长度为 length的数据包到指定主机上的指定端口号。
            DatagramPacket dp = new DatagramPacket(bys, bys.length, InetAddress.getByName("127.0.0.1"), 10086);
            // 调用DatagramSocket对象的方法发送数据
            ds.send(dp);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void receive(){
        //创建接收端的Socket对象(DatagramSocket)
        try (DatagramSocket ds = new DatagramSocket(12345)) {
            //创建一个数据包，用于接收数据
            byte[] bys = new byte[1024];
            DatagramPacket dp = new DatagramPacket(bys, bys.length);
            //调用DatagramSocket对象的方法接收数据
            ds.receive(dp);
            //解析数据包，并把数据在控制台显示
            System.out.println("数据是：" + new String(dp.getData(), 0, dp.getLength()));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
